//
//  HomeViewController.swift
//  Weibo
//
//  Created by 唐润欣 on 16/6/17.
//  Copyright © 2016年 唐润欣. All rights reserved.
//

import UIKit
import YYModel

private var identifier = "cell"

//MARK: - 属性，构造函数，生命周期函数
class HomeViewController: RootViewController {
    
    var listViewModel: ListViewModel = ListViewModel()

    override func viewDidLoad() {
        
        super.viewDidLoad()
        
        tableView.separatorStyle = .None
        
        //在每一个子模块中，使用的自定义cell可能不一样
        tableView.registerClass(StatusCell.self, forCellReuseIdentifier: identifier)
        
        //尽量设置和和真实的行高差不多，越接近真实行高性能越好
        //先保证tableView的可以正常滚动
        tableView.estimatedRowHeight = 200
        
        //设置以下参数，可以自动计算行高
        //滚动的过程中，动态地去调整tableviewCell的高度
        tableView.rowHeight = UITableViewAutomaticDimension
        
        //设置visitorView
        visitorView?.setVisitorView("关注一些人,回这里看看有什么惊喜", icon: "visitordiscover_feed_image_house", isHome: true)
        
        //临听用户登录、授权的通知
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "oauthSuccess", name: oauthSuccessNotification, object: nil)
        
        //加载首页数据
        loadData()
    }
}

// MARK: - 登录成功接收通知响应方法
extension HomeViewController {
    
    func oauthSuccess() {
        
        //1. remove 访客视图
        visitorView?.removeFromSuperview()
        
        //2. 删除注册，登录按钮
        self.navigationItem.leftBarButtonItem = nil
        self.navigationItem.rightBarButtonItem = nil
        
        //3. 重新获取数据，刷新表格
        loadData()
    }
}

// MARK: - 加载首页数据
extension HomeViewController {
    
    ///  加载网络请求数据
    override func loadData() {
        
        //判断是不是上拉
        let isPullUp = refreshControl.isPullupRefresh
        
        //上下拉刷新控件开始刷新
        refreshControl.beginRefreshing()
        
        listViewModel.loadData(isPullUp) { (success) -> () in
            
            //refreshControl结束刷新操作
            self.refreshControl.endRefreshing()
            self.tableView.reloadData()
        }
    }
}

// MARK: - tableView数据源方法
extension HomeViewController {
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return listViewModel.statusViewModelArray.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCellWithIdentifier(identifier,forIndexPath: indexPath) as! StatusCell
        
        let statusViewModel = listViewModel.statusViewModelArray[indexPath.row]
        
        cell.viewModel = statusViewModel
        
        return cell
    }
}

// MARK: - tableView的代理方法
extension HomeViewController {
    
    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        
    }
}
